package dao

import (
	"TaskAssignmentSystem/internal/pkg/code"
	"TaskAssignmentSystem/internal/pkg/modelbase"
	"time"
)

type SystemTopic modelbase.SystemTopic

// TopicUser 答主
type TopicUser struct {
	UserId     string `json:"user_id"`     // 用户ID
	RealName   string `json:"real_name"`   // 用户姓名
	TeamNumber string `json:"team_number"` // 团队编号
	NickName   string `json:"nick_name"`   //昵称
}

// TopicAudit 题目审核反馈
type TopicAudit struct {
	AuditUser   TopicUser     `json:"audit_user"`  // 审核人
	AuditAnswer []TopicAnswer `json:"TopicAnswer"` // 审核反馈
	FinishTime  time.Time     `json:"finish_time"` // 完成时间
}

// TopicAnswerVO 作答视图
type TopicAnswerVO struct {
	Respondent    TopicUser     `json:"Respondent"`     // 答主
	TopicAnswer   []TopicAnswer `json:"TopicAnswer"`    // 作答内容
	FinishTime    time.Time     `json:"finish_time"`    // 完成时间
	RejectionRate int           `json:"rejection_rate"` // 驳回率
}

// SystemTopicVO 题目信息视图
type SystemTopicVO struct {
	code.Model
	SN                 int                            `json:"sn"`                 //序号
	ProjectId          string                         `json:"project_id"`         //关联的项目Id
	TopicId            string                         `json:"topic_id"`           //自定义题目Id
	BatchId            string                         `json:"batch_id"`           //批次Id
	Title              string                         `json:"title"`              //题目标题
	Status             int                            `json:"status"`             //状态 0未生效 1已完成 2已领取 3指派中 4返修中 5闲置中 6已作废 7已失效
	EffectiveTime      time.Time                      `json:"effective_time"`     //题目生效时间
	EndDateTime        time.Time                      `json:"end_date_time"`      //题目截止时间
	FinishTime         time.Time                      `json:"finish_time"`        //完成时间
	HaveRead           int                            `json:"have_read"`          //当状态为返修的时候，此字段 0 未读 1已读
	TeamNumber         string                         `json:"team_number"`        //团队编号
	ReceiverId         string                         `json:"receiver_id"`        //领取人的Id
	GiveUpNumber       int                            `json:"give_up_number"`     //被放弃多少次，自动作废的阀值
	TopicNote          []modelbase.TopicNote          `json:"TopicNote"`          //题目备注
	TopicConfiguration []modelbase.TopicConfiguration `json:"TopicConfiguration"` //题目配置
	TopicUserRecord    []TopicUserRecord              `json:"TopicUserRecord"`    //题目领取记录
	Priority           int                            `json:"priority"`           //题目领取的优先级
	Labels             code.SliceString               `json:"labels"`             //题目标签
	EnumType           int                            `json:"enum_type"`          //题目类型 0:普通题目 1:一审题目 2:二审题目
	AuditStatus        int                            `json:"audit_status"`       //审核状态：0:待审核 1:一审通过 2:二审通过
	TopicAnswer        TopicAnswerVO                  `json:"TopicAnswer"`        //题目作答内容
	TopicAudit         TopicAudit                     `json:"TopicAudit"`         //最近审核记录
}
